home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / glibc108.zip / glibc108 / sunrpc / rpc_parse.h < prev    next >
C/C++ Source or Header  |  1994-02-06  |  3KB  |  158 lines

  1. /*
  2.  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  3.  * unrestricted use provided that this legend is included on all tape
  4.  * media and as a part of the software program in whole or part.  Users
  5.  * may copy or modify Sun RPC without charge, but are not authorized
  6.  * to license or distribute it to anyone else except as part of a product or
  7.  * program developed by the user.
  8.  * 
  9.  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
  10.  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  11.  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
  12.  * 
  13.  * Sun RPC is provided with no support and without any obligation on the
  14.  * part of Sun Microsystems, Inc. to assist in its use, correction,
  15.  * modification or enhancement.
  16.  * 
  17.  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  18.  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
  19.  * OR ANY PART THEREOF.
  20.  * 
  21.  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  22.  * or profits or other special, indirect and consequential damages, even if
  23.  * Sun has been advised of the possibility of such damages.
  24.  * 
  25.  * Sun Microsystems, Inc.
  26.  * 2550 Garcia Avenue
  27.  * Mountain View, California  94043
  28.  */
  29. /* @(#)rpc_parse.h 1.3 87/03/09 (C) 1987 SMI */
  30.  
  31. /*
  32.  * rpc_parse.h, Definitions for the RPCL parser 
  33.  * Copyright (C) 1987, Sun Microsystems, Inc. 
  34.  */
  35.  
  36. enum defkind {
  37.     DEF_CONST,
  38.     DEF_STRUCT,
  39.     DEF_UNION,
  40.     DEF_ENUM,
  41.     DEF_TYPEDEF,
  42.     DEF_PROGRAM
  43. };
  44. typedef enum defkind defkind;
  45.  
  46. typedef char *const_def;
  47.  
  48. enum relation {
  49.     REL_VECTOR,    /* fixed length array */
  50.     REL_ARRAY,    /* variable length array */
  51.     REL_POINTER,    /* pointer */
  52.     REL_ALIAS,    /* simple */
  53. };
  54. typedef enum relation relation;
  55.  
  56. struct typedef_def {
  57.     char *old_prefix;
  58.     char *old_type;
  59.     relation rel;
  60.     char *array_max;
  61. };
  62. typedef struct typedef_def typedef_def;
  63.  
  64.  
  65. struct enumval_list {
  66.     char *name;
  67.     char *assignment;
  68.     struct enumval_list *next;
  69. };
  70. typedef struct enumval_list enumval_list;
  71.  
  72. struct enum_def {
  73.     enumval_list *vals;
  74. };
  75. typedef struct enum_def enum_def;
  76.  
  77.  
  78. struct declaration {
  79.     char *prefix;
  80.     char *type;
  81.     char *name;
  82.     relation rel;
  83.     char *array_max;
  84. };
  85. typedef struct declaration declaration;
  86.  
  87.  
  88. struct decl_list {
  89.     declaration decl;
  90.     struct decl_list *next;
  91. };
  92. typedef struct decl_list decl_list;
  93.  
  94. struct struct_def {
  95.     decl_list *decls;
  96. };
  97. typedef struct struct_def struct_def;
  98.  
  99.  
  100. struct case_list {
  101.     char *case_name;
  102.     declaration case_decl;
  103.     struct case_list *next;
  104. };
  105. typedef struct case_list case_list;
  106.  
  107. struct union_def {
  108.     declaration enum_decl;
  109.     case_list *cases;
  110.     declaration *default_decl;
  111. };
  112. typedef struct union_def union_def;
  113.  
  114.  
  115.  
  116. struct proc_list {
  117.     char *proc_name;
  118.     char *proc_num;
  119.     char *arg_type;
  120.     char *arg_prefix;
  121.     char *res_type;
  122.     char *res_prefix;
  123.     struct proc_list *next;
  124. };
  125. typedef struct proc_list proc_list;
  126.  
  127.  
  128. struct version_list {
  129.     char *vers_name;
  130.     char *vers_num;
  131.     proc_list *procs;
  132.     struct version_list *next;
  133. };
  134. typedef struct version_list version_list;
  135.  
  136. struct program_def {
  137.     char *prog_num;
  138.     version_list *versions;
  139. };
  140. typedef struct program_def program_def;
  141.  
  142. struct definition {
  143.     char *def_name;
  144.     defkind def_kind;
  145.     union {
  146.         const_def co;
  147.         struct_def st;
  148.         union_def un;
  149.         enum_def en;
  150.         typedef_def ty;
  151.         program_def pr;
  152.     } def;
  153. };
  154. typedef struct definition definition;
  155.  
  156. /* @(#)rpc_parse.h    2.1 88/08/01 4.0 RPCSRC */
  157. definition *get_definition();
  158.